// 类：台账系统用户页面逻辑（管理表格/表单）
// 方法：初始化、渲染表格、绑定事件

layui.use(['table', 'layer', 'form'], function () {
    var table = layui.table;
    var layer = layui.layer;
    var form = layui.form;

    // 初始化静态数据（仅前端示例）
    var staticUsers = [
        { id: 1, username: 'ledger001', realname: '张三', status: 1, createdAt: '2024-08-01 10:00:00', enabled: true },
        { id: 2, username: 'ledger002', realname: '李四', status: 1, createdAt: '2024-08-05 09:20:00', enabled: true },
        { id: 3, username: 'ledger003', realname: '王五', status: 0, createdAt: '2024-08-12 14:30:00', enabled: false },
        { id: 4, username: 'ledger004', realname: '赵六', status: 1, createdAt: '2024-09-01 08:15:00', enabled: true },
        { id: 5, username: 'ledger005', realname: '钱七', status: 1, createdAt: '2024-09-05 11:30:00', enabled: true },
        { id: 6, username: 'ledger006', realname: '孙八', status: 0, createdAt: '2024-09-10 16:45:00', enabled: false },
    ];

    // 渲染表格
    table.render({
        elem: '#ledgerUserTable',
        id: 'ledgerUserTable',
        height: 'full-160',
        page: true,
        limit: 10,
        limits: [10, 20, 50],
        cols: [[
            { field: 'id', title: 'ID', sort: true, align: 'center', width: 80, templet: function (d) { return '<span class="col-id">' + d.id + '</span>'; } },
            { field: 'username', title: '用户名', width: 140 },
            { field: 'realname', title: '姓名', width: 120 },
            { field: 'status', title: '状态', width: 120, templet: '#tplStatus' },
            { field: 'createdAt', title: '创建时间', width: 160 },
            { title: '操作', toolbar: '#tplRowActions', fixed: 'right', width: 260 }
        ]],
        data: staticUsers
    });

    // 通用弹窗打开方法（按钮参数化）
    var openLayer = function (options) {
        var idx = layer.open({
            type: 1,
            title: options.title || '弹窗',
            area: options.area || '520px',
            shadeClose: true,
            content: options.content,
            btn: options.btn || ['确定', '取消'],
            yes: function (index, layero) {
                if (typeof options.onYes === 'function') {
                    options.onYes(index, layero);
                } else {
                    layer.close(index);
                }
            },
            btn2: function (index, layero) {
                if (typeof options.onBtn2 === 'function') {
                    return options.onBtn2(index, layero);
                }
                // 返回 undefined 走默认关闭
            },
            end: function () {
                if (typeof options.onEnd === 'function') {
                    options.onEnd();
                }
            },
            success: function () {
                if (typeof options.onSuccess === 'function') {
                    options.onSuccess();
                }
            }
        });
        return idx;
    };

    // 新增/编辑用户（使用参数化按钮）
    var openUserForm = function (title, data, btns) {
        return openLayer({
            title: title || '添加用户',
            area: '520px',
            content: document.getElementById('tplUserForm').innerHTML,
            btn: btns && btns.length ? btns : ['保存', '取消'],
            onSuccess: function () {
                if (data) {
                    form.val('ledgerUserForm', data);
                }
            },
            onYes: function (index) {
                // 统一提交拦截（静态示例）
                var formData = form.val('ledgerUserForm');
                // 这里只做前端校验提示
                if (!formData.username || !formData.realname) {
                    layer.msg('请完善必填信息');
                    return;
                }
                layer.msg('保存成功（静态示例）');
                layer.close(index);
            },
            onBtn2: function () { /* 默认关闭 */ }
        });
    };

    // 修改角色
    var openRoleForm = function (title, data, btns) {
        return openLayer({
            title: title || '修改角色',
            area: '520px',
            content: document.getElementById('tplRoleForm').innerHTML,
            btn: btns && btns.length ? btns : ['保存', '取消'],
            onYes: function (index) {
                layer.msg('角色已更新（静态示例）');
                layer.close(index);
            }
        });
    };

    // 搜索功能
    var performSearch = function() {
        var searchValue = document.getElementById('searchInput').value;
        var statusValue = document.getElementById('statusFilter').value;
        
        // 过滤数据
        var filteredData = staticUsers.filter(function(item) {
            var matchSearch = !searchValue || 
                item.username.toLowerCase().includes(searchValue.toLowerCase()) ||
                item.realname.toLowerCase().includes(searchValue.toLowerCase());
            
            var matchStatus = !statusValue || item.status.toString() === statusValue;
            
            return matchSearch && matchStatus;
        });
        
        // 重新渲染表格
        table.reload('ledgerUserTable', {
            data: filteredData
        });
        
        // 显示搜索结果
        var searchMsg = '搜索结果：共找到 ' + filteredData.length + ' 条记录';
        if (searchValue) searchMsg += '，关键词：' + searchValue;
        if (statusValue) searchMsg += '，状态：' + (statusValue === '1' ? '正常' : '禁用');
        
        layer.msg(searchMsg, { icon: 1 });
    };

    // 事件：搜索
    var searchBtn = document.getElementById('btnSearch');
    if (searchBtn) {
        searchBtn.addEventListener('click', performSearch);
    }

    // 事件：重置
    var resetBtn = document.getElementById('btnReset');
    if (resetBtn) {
        resetBtn.addEventListener('click', function () {
            document.getElementById('searchInput').value = '';
            document.getElementById('statusFilter').value = '';
            // 重新渲染原始数据
            table.reload('ledgerUserTable', {
                data: staticUsers
            });
            layer.msg('已重置搜索条件', { icon: 1 });
        });
    }

    // 事件：添加
    var addBtn = document.getElementById('btnAddUser');
    if (addBtn) {
        addBtn.addEventListener('click', function () { openUserForm('添加用户'); });
    }

    // 状态筛选变化事件
    var statusFilter = document.getElementById('statusFilter');
    if (statusFilter) {
        statusFilter.addEventListener('change', performSearch);
    }

    // 行内工具栏事件
    table.on('tool(ledgerUserTable)', function (obj) {
        var data = obj.data;
        var event = obj.event;
        if (event === 'edit') {
            openUserForm('编辑用户', data, ['保存修改', '取消']);
        } else if (event === 'role') {
            openRoleForm('修改角色', data);
        } else if (event === 'toggle') {
            // 切换启用/禁用（仅前端提示）
            var text = data.enabled ? '禁用后将无法登录，是否继续？' : '启用该用户，是否继续？';
            layer.confirm(text, { icon: 3, title: '确认' }, function (index) {
                layer.close(index);
                layer.msg('已' + (data.enabled ? '禁用' : '启用') + '（静态示例）');
            });
        } else if (event === 'del') {
            layer.confirm('确认删除该用户？（删除后无法恢复，静态示例）', { icon: 3, title: '删除确认' }, function (index) {
                layer.close(index);
                layer.msg('删除成功（静态示例）');
            });
        }
    });
});
